package com.zbkj.common.model.bte;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.math.BigDecimal;

/**
 * 支付接口内容实体
 *
 * @author Swallows
 * @date 2022-08-23 10:54
 */
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
@NoArgsConstructor
@AllArgsConstructor
public class PrepayContent implements Serializable {

    private static final long serialVersionUID=1L;

    /**
     * 聚合平台分配的商户id(必传)
     */
    @JsonProperty("store_id")
    private String storeId;

    /**
     * 订单号 本系统自己生成的(必传)
     */
    @JsonProperty("out_trade_no")
    private String outTradeNo;

    /**
     * 支付金额(必传)
     */
    @JsonProperty("total_amount")
    private BigDecimal totalAmount;

    /**
     * 费率
     */
    @JsonProperty("merchant_rate")
    private BigDecimal merchantRate;

    /**
     * 补贴金额(必传 没有则传0)
     */
    @JsonProperty("subsidy_fee")
    private BigDecimal subsidyFee;

    /**
     * 支付渠道(必传): <br>
     * 1-支付宝<br>
     * 2-微信<br>
     * 6-云闪付<br>
     * 9-数字人民币
     */
    @JsonProperty("pay_platform_type")
    private String payPlatformType;

    /**
     * 订单支付方式(必传): <br>
     * 2-native，原生扫码支付（支持支付宝、银联二维码、数字人民币、银联全渠道分期）<br>
     * 3-JSAPI，公众号支付，服务窗支付<br>
     * 4-小程序支付<br>
     * 6-云闪付JS支付
     */
    @JsonProperty("order_type")
    private String orderType;

    /**
     * 微信 支付宝下的子商户号 一个商户有多个子商户号的情况下必填
     */
    @JsonProperty("sub_merchant_no")
    private String subMerchantNo;

    /**
     * 微信公众号ID ；微信公众号支付的公众号id或微信小程序支付的小程序appid;
     * 如果传了会使用此appid进行下单；没传会使用商户进件时最新配置的appid
     */
    @JsonProperty("sub_appid")
    private String subAppid;

    /**
     * 付款用户id，“微信sub_openid”，“支付宝 user_id”，“云闪付user_id”
     * 微信公众号、小程序、支付宝服务窗、支付宝小程序、云闪付JS支付必填
     */
    @JsonProperty("user_id")
    private String userId;

    /**
     * 订单标题 必填
     */
    private String subject;

    /**
     * 商品描述 必填<br>
     * 商品或支付单简单描述，格式要求：门店品牌名-城市分店名-实际商品名称
     */
    private String body;

    /**
     * 支付成功回调地址
     */
    @JsonProperty("notify_url")
    private String notifyUrl;

    /**
     * APP和网页支付提交用户端ip
     */
    @JsonProperty("spbill_create_ip")
    private String spbillCreateIp;

    /**
     * 小程序支付成功后的跳转地址
     * 微信公众号支付成功后跳转路径须在微信平台点金计划中配置
     */
    @JsonProperty("callback_url")
    private String callbackUrl;

    /**
     * 公众号、小程序支付过程中用户取消支付或支付失败跳转地址
     */
    @JsonProperty("cancel_url")
    private String cancelUrl;

    /**
     * 拉起支付方式(条件必填):<br>
     * 1- 调用微信支付宝官方接口方式
     */
    @JsonProperty("pull_up_type")
    private Integer pullUpType;

    /**
     * 分账标识(分账订单时必填):<br>
     * 0-无需分账<br>
     * 1-分账订单
     */
    @JsonProperty("share_order_type")
    private Integer shareOrderType = 0;

    /**
     * 终端设备号，可由服务商自行定义
     */
    @JsonProperty("device_info")
    private String deviceInfo;

    /**
     * 订单失效时间
     */
    @JsonProperty("time_expire")
    private String timeExpire;

    /**
     * 门店编号（微信支付宝的门店编号）
     */
    @JsonProperty("store_no")
    private String storeNo;

    /**
     * 终端设备号，聚合平台的唯一编号，入驻或终端绑定时返回；<br>
     * 不传取默认终端设备号
     */
    @JsonProperty("terminal_id")
    private String terminalId;

    /**
     * 银行卡受理终端产品应用认证编号。该编号由“中国银联标识产品企业资质认证办公室”为通过入网认证的终端进行分配。<br>
     * 银联直连终端必填
     */
    @JsonProperty("network_license")
    private String networkLicense;

    /**
     * （付款 APP）设备 GPS 位置，格式为纬度/经度，+表示北纬、东经，-表示南纬、西经
     */
    private String location;

    private String sign;

    /**
     * 扩展字段 用于回调时的场景判断
     */
    private Object extend;
}
